<?php
// 这是系统自动生成的公共文件
use  think\facade\Cache;
/**
 * 发送短信的方法
 */

if (!function_exists('send_message')) {
    /**
     * 发送短信
     */
    function send_message($phone){
        if (strlen($phone) != 11) {
            abort(2001,'手机号格式不正确');
        }
        // 验证参数。。
        $code = rand(1000,9999);//生成一个四位的随机数
        # 存储的key、怎么去定义
        Cache::store('redis')->set('code_'.$phone,$code,300);

        # 一分钟之内手机号只能发送一次
        # 第二次请求的时候
        $is_send = Cache::store('redis')->get('send_time_'.$phone);
        if ($is_send) {
            abort(2002,'已经发送过、不能重复发送');
        }
//        发送需要记录发送时间 第一次发送的时候
        Cache::store('redis')->set('send_time_'.$phone,time(),60);

        # 一天一个手机号只能发送5次

        //  构造请求的数据
        $sms_config = config('key.smsbao');
        $smsapi = $sms_config['host'];//请求的接口的地址
        $user = $sms_config['username']; //短信平台帐号
//        p参数的两种传参方式
        // 方式二 appkey
        $pass = $sms_config['APIKey'];
        $content="【品优购】验证码为:{$code},请在注册页面中输入验证码以完成注册、验证码有效期为5分钟";//要发送的短信内容
//        $phone = $phone;//要发送短信的手机号码
        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);

        # 发送请求、 调用第三方接口
        return  curl_request($sendurl);

    }
}


/**
 * 发送请求的公共方法
 */
if (!function_exists('curl_request')) {
    /**
     * 发送请求
     * 请求方式 get post GET POST
     * @param $url 请求的地址
     * @param $method 请求的方法
     * @param $data post请求的数据
     */
    function curl_request($url,$method='get',$data=''){

        # 初始化句柄
        $ch = curl_init();
        # 设置对应的选项
        curl_setopt($ch,CURLOPT_URL,$url);//设置的请求的url
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);// 获取到结果、以字符串的形式返回

        # 判断请求方式是post还是get
        if (strtolower($method) == 'post') {
            curl_setopt($ch,CURLOPT_POST,true);//true发送post请求
            curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//设置一些请求的数据
        }
        # 执行句柄
        $result = curl_exec($ch);
        # 请求失败、可以获取错误信息
        if ($result == null || $result === false) {
            print_r(curl_error($ch));
        }
        # 关闭句柄
        curl_close($ch);

        return $result;// 返回请求的结果

    }
}

/**
 * 隐藏手机号后四位的函数
 */
if (!function_exists('encrypt_phone')) {
    function encrypt_phone($phone) {
        return str_replace(substr($phone,3,4),'****',$phone);
    }
}

/**
 * 递归处理数据
 */
if (!function_exists('recursion_data')) {

    function recursion_data($data,$pid=0){

        # 定义空数组、存放处理完成的一些数据
        $result = [];
        foreach ($data as $value) {
            if ($value['pid'] == $pid) {
                # 一级菜单、放在同一键下面
                $result[$value['id']] = $value;
                # 第二步 查询对应的子权限 、自己调用自己
                $result[$value['id']]['children'] = recursion_data($data,$value['id']);
            }
        }

        return $result;
    }
}
